﻿#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

//int main()
//{
//	//rand函数需要引头文件<stdlib.h>
//	//rand函数生成的是伪随机数
//	//生成一次之后其值将不再发生改变
//	//例
//	int re = rand();
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//	printf("%d\n", re);
//	//并且rand（）生成的数字在0~RAND MAX
//	printf("%d\n", RAND_MAX);//在大部分编程软件里RAND_MAX为32767
//rand（）函数返回会返回一个随机值
//	return 0;
//}
//int main()
//{
//	//srand()是初始化生成的随机数
//	srand(2);
//	//要设计随机数的生成种子，种子固定那生成的随机数也就固定
//	//所以引用time函数，在电脑里时间是一直再变化的
//	//这是就又引入了一个新的概念时间戳
//	//时间戳就是指现在的时间减去计算机开始的时间
//	//计算机开始的时间是1970年1月一日零分零秒零时
//	printf("%d\n", rand());
//		printf("%d\n", rand());
//		printf("%d\n", rand());
//		printf("%d\n", rand());
//		printf("%d\n", rand());
//		printf("%d\n", rand());
//	return 0;
//}
//

////ok咱们开始实践
//int main()
//{
//	//srand()是初始化生成的随机数
//	srand((unsigned int) time(NULL));
//	
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//	return 0;
//}
//完成实践


//生成一到一百的随机数
//int main()
//{
//	//rand()的范围是0~RAND_MAX所以只需要让它模上个一百就可以产生1~99的数
//	//再加上一就可以产生一到一百的数字了
//	//其实也可以产生小于等于32767的所有数
//	//例生成a到b的所有数
//	//a+rand()%上（b-a +1）
//	//例产生529到1106的数字
//	srand((unsigned int)time(NULL));
//	int re  = 529 + rand() % 577 + 1;
//	printf("%d\n", 529 + rand() % 577 + 1);
//	printf("%d\n", 529 + rand() % 577 + 1);
//	printf("%d\n", 529 + rand() % 577 + 1);
//	printf("%d\n", 529 + rand() % 577 + 1);
//	printf("%d\n", 529 + rand() % 577 + 1);
//	printf("%d\n", 529 + rand() % 577 + 1);
//	printf("%d\n", 529 + rand() % 577 + 1);
//	printf("%d\n", 529 + rand() % 577 + 1);
//	printf("%d\n", 529 + rand() % 577 + 1);
//	
//
//	return 0;
//}





//实现猜数字游戏
//void menu()
//{
//	printf("*******************************\n");
//	printf("**********   1.play ***********\n");
//	printf("**********   0.exit  **********\n");
//	printf("*******************************\n");
//	printf("请输入 ");
//
//}
//void game()
//{
//	//产生一个一到一百的数字
//	int r = rand() % 100 + 1;
//
//	int g = 0;
//	//使用循环给玩家相应的提示
//	while (520)
//	{
//		scanf("%d", &g);
//		if (r < g)
//		{
//			printf("猜大了\n");
//		}
//		else if (r > g)
//		{
//			printf("猜小了\n");
//		}
//		else
//		{
//			printf("猜对了，这个数就是%d", r);
//		}
//	}
//}
//int main()
//{
//	srand((unsigned int)time(NULL));
//	int in = 0;
//	do
//	{
//		//打印菜单，用函数打印
//		menu();
//		scanf("%d", &in);
//		//对输入和结果进行对应的处理
//		switch (in)
//		{
//		case 1:
//			printf("游戏已开始\n");
//			//游戏的实现
//			game();
//			break;
//		case 0:
//			printf("已退出游戏\n");
//			break;
//		default:
//			printf("输入错误\n");
//			break;
//		}
//	} while (in);
//	return 0;
//}


//当然可以限制猜数字的次数，但我想到一个更整人的程序
//将猜数字和和关机程序结合起来
//首先来写限制才的次数的代码
//void menu()
//{
//	printf("*******************************\n");
//	printf("**********   1.play ***********\n");
//	printf("**********   0.exit  **********\n");
//	printf("*******************************\n");
//	printf("请输入 ");
//
//}
//void game()
//{
//	int r = rand() % 100 + 1;
//
//	int g = 0;
//	int chance = 3;
//	while (chance)
//	{
//		printf("请输入一到一百的数字\n");
//		scanf("%d", &g);
//		if (r < g)
//		{
//			printf("猜大了\n");
//		}
//		else if (r > g)
//		{
//			printf("猜小了\n");
//		}
//		else
//		{
//			printf("猜对了，这个数就是%d\n", r);
//		}
//		chance--;
//	}
//	if (chance == 0)
//	{
//		printf("你的次数已用完\n");
//	}
//}
//int main()
//{
//	srand((unsigned int)time(NULL));
//	int in = 0;
//	do
//	{
//
//		menu();
//		scanf("%d", &in);
//		switch (in)
//		{
//		case 1:
//			printf("游戏已开始\n");
//			game();
//			break;
//		case 0:
//			printf("已退出游戏\n");
//			break;
//		default:
//			printf("输入错误\n");
//			break;
//		}
//	} while (in);
//	return 0;
//}
//现在来实现关机程序与猜数字游戏界和程序


//void menu()
//{
//	printf("*******************************\n");
//	printf("**********   1.play ***********\n");
//	printf("**********   0.exit  **********\n");
//	printf("*******************************\n");
//	printf("请输入 ");
//
//}
//void game()
//{
//	int r = rand() % 100 + 1;
//
//	int g = 0;
//	int chance = 10;
//	while (chance)
//	{
//		printf("请输入一到一百的数字\n");
//		scanf("%d", &g);
//		if (r < g)
//		{
//			printf("猜大了\n");
//		}
//		else if (r > g)
//		{
//			printf("猜小了\n");
//		}
//		else
//		{
//			printf("猜对了，这个数就是%d\n", r);
//		}
//		chance--;
//	}
//	if (chance == 0)
//	{
//		printf("你的次数已用完\n");
//		printf("现在执行关机程序\n");
//		system("shutdown -s -t 60");
//		printf("请输入我是猪,将取消关机\n");
//		char arr[20] = { 0 };
//		scanf("%s", arr);
//		if (strcmp(arr, "我是猪") == 0)
//		{
//			system("shutdown -a");
//			printf("已经取消关机,猪猪真乖\n");
//		}
//	}
//}
//int main()
//{
//	srand((unsigned int)time(NULL));
//	int in = 0;
//	do
//	{
//
//		menu();
//		scanf("%d", &in);
//		switch (in)
//		{
//		case 1:
//			printf("游戏已开始\n");
//			game();
//			break;
//		case 0:
//			printf("已退出游戏\n");
//			break;
//		default:
//			printf("输入错误\n");
//			break;
//		}
//	} while (in);
//	return 0; 
//}


//int main()
//{
//	//不完全初始化剩下的位置会由零初始化
//	int arr[10] = { 1,2,3 };//不完全初始化
//	int arr1[3] = { 1,2,3 };//完全初始化
//	//溢出错误示范
//	//int arr2[2] = { 1,2 ,3};
//	int i = 0;
//	int j = 0;
//	for(i = 0;i <10;i++)
//	{ 
//	  printf("%d ", arr[i]);
//	}
//	printf("\n");
//	for (j = 0;j < 3;j++)
//	{
//		printf("%d ", arr1[j]);
//	}
//	return 0;
//}

//字符数组
//int main()
//{
//	char arr[5] = "hello";
//	char arr1[5] = { 'h','e','l','l','o' };
//	printf("%zd ", sizeof(arr));
//	printf("%zd ", sizeof(arr1));
//	//因为arr1中没有\0所以输出的是随机值
//	//strlen遇见\0不再读取
//	printf("%zd ", strlen(arr1));
//
//
//	return 0;
//}


//int main()
//{
//	int n = 10;
//	printf("%zd ", sizeof(n));
//	//sizeof计算的是这个数类型所占字节大小，不是这个数所赋的值
//	printf("%zd \n", sizeof(int));
//	int arr[10];
//	printf("%zd ", sizeof(arr));//计算的是整个数组的大小，单位是字节
//	printf("%zd ", sizeof(int[10]));//这个式子可以理解为定义为整形然后有十个数4*10=40
//
//	return 0;
//}

//数组的下标
//C语⾔规定数组是有下标的，下标是从0开始的，假设数组有n个元素，最后⼀个元素的下标是n-1
//例：
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
//	//[]下标引用操作符
//	scanf("%d", &arr[0]);//将arr[0]中的数改变为33
//	printf("%d ", arr[2]);
//	printf("%d ", arr[1]);
//	printf("%d ", arr[0]);
//	//arr[i]只是数组的一个元素，所以要想通过scanf改变它的值需要取地址
//	//例
//	//为了实现代码功能将scanf提前
//	//但最后代码运行结果与预期结果相同
//	// success
//	return 0;
//}


//注意区分不同初始化的结果
//int main()
//{
//	int arr[8] = { 0 };
//	int arr1[8] = { 1,2,3,4,5,6,7,8 };
//	int i = 0;
//	//arr[8]中只放了一个元素0，所以sizeof只测量1*4
//	// 咳咳，错了因为没存放的元素，被初始化为零所以sizeof的结果还是4*8（苦笑）
//	//而arr1[8]中存放了八个元素所以sizeof打印结果为8*4
//	printf("%zd ", sizeof(arr));
//	printf("%zd ", sizeof(arr1));
//	printf("\n");
//	for (i = 0;i <= 7;i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	printf("\n");
//	//给arr输入数据
//	for (i = 0;i <= 7;i++)
//	{
//		scanf("%d", &arr[i]);
//	}
//	//打印输入数据
//	for (i = 0;i <= 7;i++)
//	{
//		printf("%d ", arr[i]);
//	}
//
//
//	return 0;
//}


//还有个关于配置环境环境的注意
//配置成x64的环境，编译出来的是x64程序，只能在x64的环境下运行
//配置成x86的环境，编译出来的是x32程序，可以在x32和x64的环境下运行
//还有注意一下x64环境下的地址值会长一点
//int main()
//{
//	int arr[10] = { 1,2,3,4,56,7,7,8,9,0 };
//	char arr1[10] = "abcdefghij";
//	int j = 0;
//	for (int i = 0;i < 10;i++)
//	{
//		printf("arr[%d] = %p\n", i, &arr[i]);
//		//可以直接在printf后面加\n效果和在下一条语句中加\n效果相同
//		// 地址会根据数组的类型来依次储存
//      //这同样可以看出数组的存放是连续的
//		// 对应地址的值也会依次根据数组类型增加
//		//printf("\n");
//	}
//	for (j = 0;j < 10;j++)
//	{
//		printf("arr1[%d] = %p\n", j, &arr1[j]);
//
//	}
//
//	return 0;
//}

//二维数组
//int main()
//{
//	//二维数组和一维数组其实有很多相同的性质
//	//比如数组的存放都是连续的
//	//二维数组的行可以省略但列不可以省略
//	//用过调试是来看吧，没有行用循环有点困难
//	int arr[][2] = { 1,2,34,5,6,7,5 };
//	//结果符合预期
//	//ok现在来打印二维数组的行和列
//	int arr1[2][4] = { 1,2,3,4,5,6,7,8 };
//	int i = 0;
//	//可以根据行打印也可以根据列打印
//	for (i = 0;i < 2;i++)
//	{
//		int j = 0;
//		for (j = 0;j < 4;j++)
//		{
//			printf("%d ", arr1[i][j]);
//		}
//		printf("\n");
//	}
//	printf("\n");
//	//ok实现了打印列的想法
//	//需要注意的是打印列的时候i和j需要根据实际需求来调整
//	for (i = 0;i < 4;i++)
//	{
//		int j = 0;
//		for (j = 0;j < 2;j++)
//		{
//			printf("%d ", arr1[j][i]);
//		}
//		printf("\n");
//	}
//	//还有就是关于数组的完全初始化和不完全初始化的问题
//	//还有初始化的方式
//	//method1
//	int arr2[2][2] = { 1,2 ,1,2};
//	//method2
//	//相当于把二维数组当一维数组初始化
//	// 因为一维数组的初始化就是通过{}来初始化的
//	int arr3[2][2] = { {1,21},{21,2} };
//	//和一维数组一样未使用的位置会被初始化为0
//	int arr4[3][4] = { {1},{1},{1} };
//	//这里咱们就通过调试来看了
//	//success结果符合预期
//	return 0;
//}
//ok这样代码训练完成了但没有五百行来凑一凑
int main()
{
	printf("请输入你最喜欢的一个数字\n");
	int a = 0;
	scanf("%d", &a);
	if (a == 9420)
	{
		printf("麦小兜的歌？\n");
		char b[10] = { 0 };
			scanf("%s", &b);
			if (strcmp(b, "Yes") == 0)
			{
				printf("this my best like song when I was young");
			}
			else
			{
				printf("sorry ,I thought it like that");
			}
	}
	else
	{
		printf("nothihg \n");
	}

	return 0;
}